Writing in Sunday Times, the prime minister said we were “all in this together” when it came to paying off the national debt.
His pledge will save about £800,000 a year and £4m by 2020.
The decision means ministerial pay will not have risen for a decade by the end of parliament. Cabinet ministers currently receive a salary of £134,565.
This includes their pay as MPs. The prime minister is paid a total of £142,500 reports BBC.
Mr Cameron said his decision to freeze ministerial pay for the duration of the parliament was part of his “One Nation” approach to tackling the deficit, and becoming a country where “all hard-working people can get on”.
He writes: “We can’t pretend there’s not still a long way to go. We’ve halved the deficit as a share of the economy – but there’s still half of it left to pay off.
“So we will continue to take the difficult decisions necessary to bring spending down and secure our economy. As we go about doing that, I want people to be in no doubt: I said five years ago we were all in this together, and five years on, nothing has changed.
“That’s why, for example, I’ve decided to freeze the pay of the ministers in the government. For me, that’s just one step which sends out a clear signal: that as we continue knuckling down as a country, we will all play our part.”
Meanwhile, the UK’s 650 MPs – who are currently paid £67,060 – are in line for a 9% pay rise later this year after the independent watchdog – known as the Independent Parliamentary Standards Authority (IPSA) – said pay should rise to £74,000 after the election.
Changes brought in after the 2009 expenses scandal mean MPs are no longer in charge of setting their own pay rates, instead this issue now falls within the scope of IPSA.
But the government has made it clear that the scale of the IPSA’s suggested increase is “not right” and should be reconsidered, given that public sector pay rises have been capped at 1%.